#pragma once
#include "IShader.h"
#include "SimpleShader.h"

class GeoShader:
	public IShader
{
public:
	GeoShader(MeshTypeData mt);
	~GeoShader(void);
	HRESULT Init(const char* effectName,const char* VsName, const char* vsVersion, const char* PsName,const char* psVersion, VertexLayout vl, const char* GsName = NULL,const char* GsVersion = NULL, D3D11_SO_DECLARATION_ENTRY declaration[] = NULL, int nElements = 0,UINT* stride = NULL, UINT numStrides = 0);	
	void SetShaderOnDevice(RenderableObject obj);
	void UnsetShaderOnDevice(RenderableObject obj);
	void Update(RenderableObject obj,Camera* camera);

	CBChangesEveryFrame		cbChangesEveryFrame;
	CBChangeOnResize		cbChangeOnResize;

	private:
	ID3D11Buffer*                       g_pCBChangesEveryFrame;
	ID3D11Buffer*                       g_pCBChangesOnResize;	
	ID3D11SamplerState*                 g_pSamplerLinear ;
	ID3D11RasterizerState*				g_RasterState;	
};

